package net.sf.rose.business.bean.database;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.ElementList;

/**
 * @author fengjian
 * @since 2014-6-11
 */
public class DataTypeMetaBeans {

	/** 数据库名称 */
	@Attribute
	private String name = null;

	/** 启用 */
	@Attribute
	private boolean used = false;

	/** 所有的数据类型 */
	@ElementList(required = false)
	private List<DataTypeMetaBean> dataMetas = new ArrayList<DataTypeMetaBean>();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isUsed() {
		return used;
	}

	public void setUsed(boolean used) {
		this.used = used;
	}

	public List<DataTypeMetaBean> getDataMetas() {
		return dataMetas;
	}

	public void setDataMetas(List<DataTypeMetaBean> dataMetas) {
		this.dataMetas = dataMetas;
	}

	public Map<String, DataTypeMetaBean> getDataMetaMap() {
		Map<String, DataTypeMetaBean> map = new HashMap<String, DataTypeMetaBean>();
		for (DataTypeMetaBean meta : dataMetas) {
			map.put(meta.getName(), meta);
		}
		return map;
	}

	public void addDataMetaBean(DataTypeMetaBean meta) {
		this.dataMetas.add(meta);
	}

	public void updateDataMetaBean(DataTypeMetaBean bean) {
		for (DataTypeMetaBean meta : dataMetas) {
			if (meta.getName().equals(bean.getName())) {
				meta.setName(bean.getName());
				meta.setDbType(bean.getDbType());
				meta.setJavaType(bean.getJavaType());
			}
		}
	}

	public void removeDataMetaBean(String name) {
		if (name == null || name.equals(""))
			return;
		for (int i = 0; i < this.dataMetas.size(); i++) {
			DataTypeMetaBean m = this.dataMetas.get(i);
			if (m.getName().equals(name)) {
				this.dataMetas.remove(i);
			}
		}
	}
}
